package per.hnvcam.hedge.algebra;

import per.hnvcam.common.OrderedSet;

public interface HedgeAlgebraDefinition {
   OrderedSet<String> getDomain();
   OrderedSet<String> getPositiveG();
   void setPositiveG(OrderedSet<String> positiveG);
   OrderedSet<String> getNegativeG();
   void setNegativeG(OrderedSet<String> negativeG);
   OrderedSet<String> getPositiveH();
   void setPositiveH(OrderedSet<String> positiveH);
   OrderedSet<String> getNegativeH();
   void setNegativeH(OrderedSet<String> negativeH);
   double getAlpha();
   double getBeta();
   void refresh();

   OrderedSet<String> applyHedge(String item);
   void setFunctionMeterValue(String term, double functionMeterValue);
   double getFunctionMeterValue(String item);
   boolean checkForConsistency();
   int compareCompound(String comp1, String comp2);
   OrderedSet<String> generateDomain();
   int getHedgeLayerNumber();
   void setHedgeLayerNumber(int hedgeLayerNumber);

   int getSign(String compound);

}
